const args = process.argv.slice(2)
const fs = require('fs')
const path = require('path')
let [appType, env] = args
let serviceYszc = "https://xjsservice.ahala.cn/"
let userYszc = "https://yszc.ahala.cn"
const manifestPath = `${__dirname}/manifest.json`
let Manifest = fs.readFileSync(manifestPath, { encoding: 'utf-8' })
replaceConfig()
setManifest()
dealandroidPrivacy()
function setManifest() {
	let manifestData = {}
	let setParams = {}
	switch (appType) {
		case 'user':
			manifestData = {
				name: {
					test: "灰耳朵陪宠测试",
					prod: "灰耳朵陪宠"
				},
				appid: {
					test: "__UNI__FD7E240",
					prod: "__UNI__A200BAF"
				},
				wxappid: {
					test: "wx2a211264ed6756d5",
					prod: "wxc39208f37236cc87"
				},
				UniversalLinks: {
					test: "https://xjs-test.ctgaba.com/ulink/",
					prod: "https://xjs.ahala.cn/ulink/"
				}
			}
			setParams = {
				"name": manifestData.name[env],
				"appid": manifestData.appid[env],
				"app-plus.distribute.sdkConfigs.share.weixin.appid": manifestData.wxappid[env],
				"app-plus.distribute.sdkConfigs.oauth.weixin.appid": manifestData.wxappid[env],
				"app-plus.distribute.sdkConfigs.payment.weixin.appid": manifestData.wxappid[env],
				"app-plus.distribute.sdkConfigs.share.weixin.UniversalLinks": manifestData.UniversalLinks[env],
				"app-plus.distribute.sdkConfigs.oauth.weixin.UniversalLinks": manifestData.UniversalLinks[env],
				"app-plus.distribute.sdkConfigs.payment.weixin.UniversalLinks": manifestData.UniversalLinks[env],
			}
			break;
		case 'service':
			manifestData = {
				name: {
					test: "灰耳朵服务端测试",
					prod: "灰耳朵服务端"
				},
				appid: {
					test: "__UNI__9F4321B",
					prod: "__UNI__D242B03"
				},
				wxappid: {
					test: "wx2a211264ed6756d5",
					prod: "wxc39208f37236cc87"
				},
				UniversalLinks: {
					test: "https://xjs-test.ctgaba.com/ulink/",
					prod: "https://xjsservice.ahala.cn/ulink/"
				}
			}
			setParams = {
				"name": manifestData.name[env],
				"appid": manifestData.appid[env],
				"app-plus.distribute.sdkConfigs.share.weixin.appid": manifestData.wxappid[env],
				"app-plus.distribute.sdkConfigs.oauth.weixin.appid": manifestData.wxappid[env],
				"app-plus.distribute.sdkConfigs.payment.weixin.appid": manifestData.wxappid[env],
				"app-plus.distribute.sdkConfigs.share.weixin.UniversalLinks": manifestData.UniversalLinks[env],
				"app-plus.distribute.sdkConfigs.oauth.weixin.UniversalLinks": manifestData.UniversalLinks[env],
				"app-plus.distribute.sdkConfigs.payment.weixin.UniversalLinks": manifestData.UniversalLinks[env],
			}
			break;
	}
	let keys = Object.keys(setParams)
	for (var i = 0; i < keys.length; i++) {
		replaceManifest(keys[i], setParams[keys[i]])
	}
	fs.writeFileSync(manifestPath, Manifest, {
		"flag": "w"
	})
}

function replaceManifest(path, value) {
	const arr = path.split('.')
	const len = arr.length
	const lastItem = arr[len - 1]
	let i = 0
	let ManifestArr = Manifest.split(/\n/)
	for (let index = 0; index < ManifestArr.length; index++) {
		const item = ManifestArr[index]
		if (new RegExp(`"${arr[i]}"`).test(item)) ++i;
		if (i === len) {
			const hasComma = /,/.test(item)
			ManifestArr[index] = item.replace(new RegExp(`"${lastItem}"[\\s\\S]*:[\\s\\S]*`), `"${lastItem}" : "${value}"${hasComma ? ',' : ''}`)
			break;
		}
	}
	Manifest = ManifestArr.join('\n')
}

function replaceConfig() {
	const configPath = `${__dirname}/config/index.ts`
	let Config = fs.readFileSync(configPath, { encoding: 'utf-8' })
	let ConfigArr = Config.split(/\n/)
	console.log(ConfigArr[2])
	// 当前端下环境配置 测试环境-正式环境
	if(env=='test'){
		ConfigArr[0] = 'let env = "test";'
	}
	if(env=='prod'){
		ConfigArr[0] = 'let env = "prod";'
	}
	// 服务端-用户端切换
	if(appType=='user'){
		ConfigArr[1] = 'let beginning = "user";'
		ConfigArr[2] = `let yszc = "${userYszc}"`
	}
	if(appType=='service'){
		ConfigArr[1] = 'let beginning = "service";'
		ConfigArr[2] = `let yszc = "${serviceYszc}"`
	}
	Config = ConfigArr.join('\n')
	fs.writeFileSync(configPath, Config, {
		"flag": "w"
	})
}

function dealandroidPrivacy(){
	let path = './androidPrivacy.json'
	let pages = require(path)
	switch (appType) {
		case 'user':
			pages.message = `　　欢迎使用灰耳朵陪宠 APP，我们非常重视您的用户权益与个人信息的保护，依据相关法律法规制定了<a href=\"${userYszc}\">《隐私政策》</a>，并向您说明如下：<br/>　1.为向您提供交易服务，我们会收集、使用必要的信息(例如联系电话、位置等)。<br/>　2.我们会采用业界先进的安全措施，保护您的信息安全。<br/>　3.应用使用期间需获取您的摄像头和相册权限，方便拍摄照片，设置头像和使用扫一扫功能。<br/>　4.您也可以对上述信息进行访问、更正、删除。未经您的同意，我们不会将上述信息共享给第三方或用于您未授权的应用。<br/>　请充分阅读并理解协议内容，点击“同意”视为您已同意上述协议的全部内容。`,
			pages.second.message = `　　进入应用前，你需先同意<a href=\"${userYszc}\">《隐私政策》</a>，否则将退出应用。`
			break;
		case 'service':
			pages.message = `　　欢迎使用灰耳朵服务端 APP，我们非常重视您的用户权益与个人信息的保护，依据相关法律法规制定了<a href=\"${serviceYszc}\">《隐私政策》</a>，并向您说明如下：<br/>　1.为向您提供交易服务，我们会收集、使用必要的信息(例如联系电话、位置等)。<br/>　2.我们会采用业界先进的安全措施，保护您的信息安全。<br/>　3.应用使用期间需获取您的摄像头和相册权限，方便拍摄照片，设置头像和使用扫一扫功能。<br/>　4.您也可以对上述信息进行访问、更正、删除。未经您的同意，我们不会将上述信息共享给第三方或用于您未授权的应用。<br/>　请充分阅读并理解协议内容，点击“同意”视为您已同意上述协议的全部内容。`,
			pages.second.message = `　　进入应用前，你需先同意<a href=\"${serviceYszc}\">《隐私政策》</a>，否则将退出应用。`
			break;
	}
	fs.writeFileSync(path, JSON.stringify(pages,null,"\t"))
}